
/**
 * @brief    Defines a dynamic loading condition for frequency response or
 * transient response problems as a linear combination of load sets defined via
 * RLOAD1 or RLOAD2 entries for frequency response or TLOAD1 or TLOAD2 entries
 * for transient response.
 *
 * @version  0.1
 * @author   wuxingchuang
 * @date     2024.11.23
 *          _
 *      ___| |__   ___ _ __   __ _  ___  _ __   __ _
 *     / __| '_ \ / _ \ '_ \ / _` |/ _ \| '_ \ / _` |
 *     \__ \ | | |  __/ | | | (_| | (_) | | | | (_| |
 *     |___/_| |_|\___|_| |_|\__, |\___/|_| |_|\__, |
 *                           |___/             |___/
 * @copyright (c) 2024 by 神工仿真, All Rights Reserved.
 */
#pragma once
#include "DataStructure/Common/Id.h"
#include "DataStructure/Common/Real.h"
#include "DataStructure/Common/SetBase.h"
#include "DataStructure/Input/Load/LoadTypes.h"

SG_DATASTRUCTURE_FEM_NAMESPACE_OPEN

struct DLOADData : public SetBase
{
    struct SLData
    {
        SG::DataStructure::Common::Real m_SI = 0.0;    ///<
        SG::DataStructure::Common::I64  m_LI = 0;      ///<
    };

    SG::DataStructure::Common::Real m_S        = 0.0;  ///<
    SG::DataStructure::Common::Id   m_domainId = 0;    ///<

    std::vector<SLData> m_SLList;
    static SG::DataStructure::FEM::LoadType GetType ()
    {
        return SG::DataStructure::FEM::LoadType::LOAD_DLOAD;
    };   
};

///@{ @brief operator override
DECLSPEC bool operator== (const DLOADData::SLData& val1, const DLOADData::SLData& val2);

DECLSPEC bool operator== (const DLOADData& val1, const DLOADData& val2);
///}@
SG_DATASTRUCTURE_FEM_NAMESPACE_CLOSE
